home *** CD-ROM | disk | FTP | other *** search
- /************************************************************
-
- StdIO.h
- Input / output
-
- Copyright © Apple Computer,Inc. 1985-1990.
-
- Copyright American Telephone & Telegraph
- Used with permission, Apple Computer Inc. (1985)
- All Rights Reserved.
-
- ************************************************************/
-
-
- #ifndef __STDIO__
- #define __STDIO__
-
- #define NULL 0
-
- #ifndef __size_t__
- #define __size_t__
- typedef unsigned int size_t;
- #endif
-
- #ifndef __va_list__
- #define __va_list__
- typedef char *va_list;
- #endif
-
-
- /*
- * The basic data structure for a stream is the FILE.
- */
-
- typedef struct {
- int _cnt;
- unsigned char *_ptr;
- unsigned char *_base;
- unsigned char *_end;
- unsigned short _size;
- unsigned short _flag;
- unsigned short _file;
- } FILE;
-
-
- /*
- * fpos_t is a type that can express any position in a file. A file's
- * end-of-file marker has type fpos_t.
- */
-
- typedef long fpos_t;
-
-
- /*
- * These macros give the meanings of bits in a FILE's _flag. setvbuf() takes
- * one of _IOFBF, _IOLBF, or _IONBF as its third argument.
- */
-
- #define _IOFBF 0 /* Pseudo-flag, default buffering style */
- #define _IOREAD (1<<0) /* Current mode is for reading */
- #define _IOWRT (1<<1) /* Current mode is for writing */
- #define _IONBF (1<<2) /* no buffering */
- #define _IOMYBUF (1<<3) /* buffer was allocated by stdio */
- #define _IOEOF (1<<4)
- #define _IOERR (1<<5)
- #define _IOLBF (1<<6) /* fflush(iop) when a \n is written */
- #define _IORW (1<<7) /* Enable read/write access */
- #define _IOSYNC (1<<8) /* Input triggers fflush() to output fp's */
- #define _IOBINARY (1<<9) /* Binary stream */
-
-
- /*
- * Default file buffer sizes used by setbuf() and setvbuf().
- */
-
- #define BUFSIZ 1024 /* default file buffer size */
- #define _LBFSIZ 100 /* Line buffer size */
-
-
- /*
- * The standard end-of-file indicator.
- */
-
- #define EOF (-1)
-
-
- /*
- * L_tmpnam is the size of char array long enough to hold a temporary file name
- * generated by tmpnam(), including the trailing null byte. The name is in the
- * form tmp.AAAXXXXXX, where AAA is a sequence of lower case letters ("aaa", "baa",
- * ... "zzz" on successive calls), and XXXXXX is a lower case letter followed by a sequence
- * of digits, all determined at runtime.
- * TMP_MAX is the number of distinct file names that tmpnam() can generate.
- */
-
- #define L_tmpnam 14
- #define TMP_MAX 17576
-
-
- /*
- * The minimum number of files that a program is guaranteed to be able to have
- * open simultaneously (including the pre-opened stdin, stdout, and stderr).
- * The numbers are listed in Inside Macintosh, page IV-178, as:
- * 64K ROM, 128K Macintosh 12 files
- * 64K ROM, 512K Macintosh 40 files
- * 128K ROM 40 files per volume
- */
-
- #define FOPEN_MAX 12
-
-
- /*
- * Maximum length of a file name, including a trailing zero byte.
- */
-
- #define FILENAME_MAX 32
-
-
- /*
- * For use by fseek():
- */
-
- #ifndef __FCNTL__ /* these defns exactly paralled in FCntl.h for lseek() */
-
- #define SEEK_CUR 1
- #define SEEK_END 2
- #define SEEK_SET 0
- #endif
-
-
- /*
- * The standard predefined streams.
- */
-
- #define stdin (&_iob[0])
- #define stdout (&_iob[1])
- #define stderr (&_iob[2])
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- /*
- * Operations on files
- */
-
- int remove(const char *filename);
- int rename(const char *oldname, const char *newname);
- FILE *tmpfile(void);
- char *tmpnam(char *s);
-
-
- /*
- * File access functions
- */
-
- int fclose(FILE *stream);
- int fflush(FILE *stream);
- FILE *fopen(const char *filename, const char *mode);
- FILE *freopen(const char *filename, const char *mode, FILE *stream);
- void setbuf(FILE *stream, char *buf);
- int setvbuf(FILE *stream, char *buf, int mode, size_t size);
-
-
- /*
- * Formatted input/output functions
- */
-
- int fprintf(FILE *stream, const char *format, ...);
- int fscanf(FILE *stream, const char *format, ...);
- int printf(const char *format, ...);
- int scanf(const char *format, ...);
- int sprintf(char *s, const char *format, ...);
- int sscanf(const char *s, const char *format, ...);
- int vfprintf(FILE *stream, const char *format, va_list arg);
- int vprintf(const char *format, va_list arg);
- int vsprintf(char *s, const char *format, va_list arg);
-
-
- /*
- * Character input/output functions and macros
- */
-
- int fgetc(FILE *stream);
- char *fgets(char *s, int n, FILE *stream);
- int fputc(int c, FILE *stream);
- int fputs(const char *s, FILE *stream);
- int getc(FILE *stream);
- #define getc(p) (--(p)->_cnt >= 0 ? (int) *(p)->_ptr++ : _filbuf(p))
- int getchar(void);
- #define getchar() getc(stdin)
- char *gets(char *s);
- int putc(int c, FILE *stream);
- #define putc(x, p) (--(p)->_cnt >= 0 ? \
- ((int) (*(p)->_ptr++ = (unsigned char) (x))) : \
- _flsbuf((unsigned char) (x), (p)))
- int putchar(int c);
- #define putchar(x) putc((x), stdout)
- int puts(const char *s);
- int ungetc(int c, FILE *stream);
-
-
- /*
- * Direct input/output functions
- */
-
- size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
- size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
-
-
- /*
- * File positioning functions
- */
-
- int fgetpos(FILE *stream, fpos_t *pos);
- int fseek(FILE *stream, long int offset, int whence);
- int fsetpos(FILE *stream, const fpos_t *pos);
- long int ftell(FILE *stream);
- void rewind(FILE *stream);
-
-
- /*
- * Error-handling functions and macros
- */
-
- void clearerr(FILE *stream);
- #define clearerr(p) ((void)((p)->_flag &= ~(_IOERR | _IOEOF)))
- int feof(FILE *stream);
- #define feof(p) ((p)->_flag & _IOEOF)
- int ferror(FILE *stream);
- #define ferror(p) ((p)->_flag & _IOERR)
- void perror(const char *s);
-
- /*
- * For macros
- */
-
- extern FILE _iob[];
- #define _NFILE 20
- int _filbuf(FILE *);
- int _flsbuf(int, FILE *);
-
- /*
- * Non-ANSI extensions
- */
-
- #ifndef __STDC__
-
- #define fileno(p) (p)->_file
- FILE *fdopen(int fildes, const char *mode);
- void fsetfileinfo (char *filename, unsigned long newcreator, unsigned long newtype);
- int getw(FILE *stream);
- int putw(int w, FILE *stream);
-
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
-
- #endif
-